2017/18
27024 - Computer Science II
Optional
5.1. Methodological overview
Presentation of theoretical concepts in lectures.
Problem solving, both individually and collaboratively, practices with computer.
5.2. Learning tasks
Presentation of the theoretical and technological concepts in lectures (2 hours / week)
Resolution and implementation problems in practice sessions tutored computer (2 hours / week)
Personnel work, particularly related to the tests (1) and (2) outlined in section Evaluation.
5.3. Syllabus
1. The object-oriented paradigm (OOP). The Java Virtual Machine: compiling and executing programs.
2. Review of elements of structured programming in the Java language: predefined types; variables and constants; operators and expressions; usual mathematical functions (the Math class). Structured statements: sequential, conditional and iterative. Defining and invoking class methods. Method signatures: overloading methods.
3. Introducing OOP. Objects, classes and references (the null reference). The life cycle of Java objects: the new operator and constructor methods, accessing members and message passing, the Java garbage collector. Array objects.
4. Defining classes. Instance and class members. Writing constructor methods. Access levels: the public interface of a class. Namespaces: Java packages.
5. An introduction to UML class diagrams. Class associations and associative classes. Roles and navigation.
6. Inheritance: concept and types, method overriding. Class hierarchy: the Java Object class. Polymorphism: virtual methods. Modeling (generalization and specialization): abstract classes and methods.
7. The Java type system: Java interfaces. Generic programming in Java. The Java collections framework.
8. Exceptions: rising, handling and specification.
9. Persistence: binary and text streams. Object persistence: the Serializable interface. Access to remote resources: File and URL classes.
10. Event-driven programming: the Java event model. GUIs programming: containers, menus and basic controls.